class Solution{
public:
  vector<int> productExceptSelf(vector<int> &nums){

    vector<int> ans(nums.size());
    int n = nums.size();

    ans.at(0) = 1;
    for(int i = 1; i < n; ++i){
      ans.at(i) = nums.at(i - 1) * ans.at(i - 1);
    }
    
    int k = 1;
    for(int i = n - 1; i >= 0; --i){
      ans.at(i) = k * ans.at(i);
      k *= nums.at(i);
    }

    return ans;

  }
};